# -*- coding: utf-8 -*-
"""
Created on Mon Aug 14 22:05:05 2023

@author: skunk69
"""

import json

chinese_name = u'社交回避及苦恼量表'
english_name = 'Social Avoidance and Distress Scale'
abbreviation = 'SAD'
category = u'家庭与人际关系量表'

outline = u"""社交回避及苦恼量表（Social Avoidance and Distress Scale, SAD），由WatSon Friend于1969年编制，用于评估和分析测试人对社交的态度和反应，包含28个条目，其中14个条目用于分析社交回避，另外14个条目用于评估苦恼程度。社交回避是采取的行动策略，而社交苦恼则是表示测试人的情绪体验。
SAD量表用于分析回避社会交往的倾向和身临其境时的情绪感受。把回避视为测试人采取的一种行为，这点可以参考回避型人格障碍。而社交苦恼则是表明测试人对社交的情绪反应，也可以参考社交焦虑量表。"""

instruction = u"""请在表达了你的反应的每个条目上选择是或否。"""

with open('SAD.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('.')
    items[key] = value.strip()

reverse_items = [1,3,4,6,7,9,12,15,17,19,22,25,27,28]
scales = [u'社交回避',u'社交苦恼']
scales_items = [
    [2,4,8,9,13,17,18,19,21,22,24,25,26,27],# 社交回避
    [1,3,5,6,7,10,11,12,14,15,16,20,23,28],# 社交苦恼
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,29)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []
rating = [u'是',u'否']
score_rules = [0,1]

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《社交回避及苦恼量表》属于一个自评量表。当用两级评分时，测试结果存在较大偏倚，因此，有许多研究人员采用五级评分。"""

reliability = u"""彭纯子等（2003）对来自大学生和中学生群体的样本施测验证了SAD的信效度，结果表明：其内部一致性信度，苦恼分量表与总分相关系数为0.90，回避分量表与总分相关系数为0.91，两个分量表之间的相关系数为0.65。总量表的Cronbach alpha系数为0.85，回避与苦恼分量表的Cronbach alpha系数分别为0.77，0.73。间隔两周重测信度为0.76。"""
validity = u"""量表的结构效度用验证性因素分析表明结构拟合较好，量表与相同或相近性质的量表之间有较高相关，而与相异结构量表之间相关相对低。SAD与测量相同特质的IAS、结构相近的焦虑SAS和惧怕否定FNE的相关都达到了显著水平，而与抑郁SDS的相关不显著，表明SAD具有较好的相容效度和区分效度。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向条目反向计分，将各维度题目相加得到各维度分，所有28个条目得分之和即为该量表的总分。"""

applications = u"""林雄标等对社交恐怖症患者和正常人样本施测SAD，结果显示患者的SAD总分和分量表分显著高于正常人，表明SAD在同时测量社交恐怖症患者的社交焦虑和回避行为时不失为一个方便的工具"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)